'use strict';

//引入所需模板
let http = require('http');
let path = require('path');
let fs = require('fs');

// 3. 判断传入的请求路径是否存在，是否是文件
function getpath(p){
    let filePath='404';

    if(fs.existsSync(p)){
        let stat = fs.statSync(p);
        if(stat.isFile()){
            return p;
        }else{
            let get = fs.readdirSync(p);
            console.log(get);
            get.forEach(item=>{
                let mypath=path.join(p,item);
                console.log(mypath);
                if(fs.statSync(mypath).isFile()){
                    filePath=mypath;
                    return;
                }
            })
        }
    }
    return filePath;
}

// 4. 创建http服务器
let server = http.createServer((req,res)=>{
    let url = req.url;
    console.log(url);

    let workSpace = path.resolve('.');

    let lisapath=path.join(workSpace,url);
    let filepath=getpath(lisapath);
    console.log(filepath);

    if(filepath!=='404'){
        // 写入 200 成功头文件
        res.writeHead(200);
        res.write('<head><meta charset="utf8" ></head>');
        // 将文件流导向res
        fs.createReadStream(filepath).pipe(res);
    }else{
        // 写入 404 失败头文件
        res.writeHead(404);
        res.write('<head><meta charset="utf8" ></head>');
        // 结束可写流，并汇报错误信息
        res.end('完犊子')
    }
});

// 5. 监听 5000 端口，并打印服务器运行位置
let port = 5000;
server.listen(port);
console.log(`http://127.0.0.1:${port}`);